/*
 *  MoveTrack.h
 *  NiNJA
 *
 *  Created by waver on 09-11-6.
 *  Copyright 2009 __MyCompanyName__. All rights reserved.
 *
 */

#import "VariableDefine.h"
#import "TypeRedefine.h"
#import "Methods.h"
/*!
    @class			MoveTrack
    @abstract		二维运动轨迹
    @discussion		此基类用来提供各种二维曲线运动轨迹公共接口.
*/

class MoveTrack {
	
private:
	
public:

/*!
    @protocol		Init3DMove
    @abstract    初始化三维空间曲线起点
    @discussion  此方法用来设置二维曲线的起始点,与将要运动方向角度,角度为与水平X轴之间的夹角.
*/
	//virtual void Init3DMove(CoordinateValue coordinate_begin,Angle angle_space) = 0;
	
	
/*!
    @method     newCoordinateWithTime
    @abstract   获得一定时间过后移动到的新位置坐标
    @discussion 此方法用来获得,曲线运动一定时间后所在的新位置.time_space为开始进行曲线运动到移动到新坐标之间的时间
*/

	virtual CoordinateValue NewCoordinateWithTime(float time_space) = 0;
	
	
	
/*!
    @protocol	  SetMoveRate
    @abstract    设置移动变化率
    @discussion  此方法用来设置二维曲线运动位移的变化率,
*/
	virtual void SetMoveRate(int line_move_x, float time_space) = 0;
	
	
	/*!
	 @method     AccountAllPointInLine
	 @abstract   计算出所有的绘制点坐标
	 @discussion 该函数用于需要绘制显示一条曲线时,计算所有需要绘制出的点坐标,
	 参数为绘制曲线选取的特殊点,vec_count为特殊点的个数,point_count是绘制此曲线所需要的点坐标数.
	 返回值true为绘制成功.
	*/
	virtual bool AccountAllPointInLine(vector<CoordinateValue>&special_point,int point_count)=0;
	
	
	/*!
	 @method     GetPointValue
	 @abstract   获得索引的坐标值
	 @discussion 此函数用来获得当前索引的坐标值,需要与函数AccountAllPointInLine配合使用,必须先调用AccountAllPointInLine之后才可调用
	 */
	virtual CoordinateValue GetPointValue(int point_index)=0;
	
/*!
    @function	GetCurrentAngle()
    @abstract   返回当前运行的方向,水平向右为x轴正向
    @discussion 返回一个值指向轨迹下一时刻移动的方向
    @param      
    @result     int 整数
*/
	virtual Angle GetCurrentAngle() = 0;
	

	
	
};